#!/usr/bin/env node

console.log('🔍 Google OAuth 回调问题诊断器');
console.log('================================');
console.log('');

console.log('正在诊断Google登录卡在 @https://accounts.google.com/gsi/transform 的问题...');
console.log('');

// 检查环境变量
require('dotenv').config();
const clientId = process.env.GOOGLE_CLIENT_ID;
const clientSecret = process.env.GOOGLE_CLIENT_SECRET;

console.log('📋 步骤 1: 检查环境配置');
if (clientId && clientSecret) {
    console.log('   ✅ 环境变量配置正常');
    console.log(`   Client ID: ${clientId.substring(0, 20)}...`);
} else {
    console.log('   ❌ 环境变量缺失');
    console.log('   解决方案: 在 .env 文件中配置 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET');
    console.log('');
    process.exit(1);
}
console.log('');

console.log('📋 步骤 2: 常见卡住原因分析');
console.log('');
console.log('🔍 可能的原因：');
console.log('   1. JavaScript回调函数处理错误');
console.log('   2. Google SDK加载时序问题');
console.log('   3. DOM未完全加载时初始化');
console.log('   4. 后端API响应格式错误');
console.log('   5. 浏览器安全策略阻止');
console.log('   6. CORS配置问题');
console.log('');

console.log('📋 步骤 3: 快速解决方案');
console.log('');
console.log('🚀 立即尝试（按顺序执行）：');
console.log('');
console.log('1️⃣ 清除浏览器缓存并强制刷新');
console.log('   Chrome: Ctrl+Shift+R 或 Ctrl+Shift+Delete');
console.log('   Firefox: Ctrl+F5 或 Ctrl+Shift+Delete');
console.log('   Safari: Cmd+Option+R');
console.log('');

console.log('2️⃣ 重启开发服务器');
console.log('   执行: npm run dev');
console.log('');

console.log('3️⃣ 使用隐私/无痕模式测试');
console.log('   这可以排除浏览器扩展或缓存干扰');
console.log('');

console.log('4️⃣ 检查浏览器控制台');
console.log('   F12 -> Console 标签，查看JavaScript错误');
console.log('   F12 -> Network 标签，检查API请求状态');
console.log('');

console.log('📋 步骤 4: 代码层面修复');
console.log('');
console.log('🔧 已应用的修复：');
console.log('   ✅ 改进了Google SDK加载检测');
console.log('   ✅ 增强了DOM就绪状态检查');
console.log('   ✅ 强化了错误处理和日志记录');
console.log('   ✅ 添加了响应格式验证');
console.log('   ✅ 配置了FedCM兼容性选项');
console.log('');

console.log('📋 步骤 5: 高级诊断');
console.log('');
console.log('🔍 浏览器开发者工具诊断：');
console.log('   1. 打开 http://localhost:3379/docs/google-auth-test.html');
console.log('   2. 按F12打开开发者工具');
console.log('   3. 切换到Console标签');
console.log('   4. 查找以下关键日志：');
console.log('      - "🔧 开始初始化Google OAuth..."');
console.log('      - "✅ Google配置有效，开始初始化..."');
console.log('      - "🎨 Google登录按钮已渲染"');
console.log('      - "🔔 收到Google登录回调:"');
console.log('   5. 如果某个步骤缺失，说明问题出现在该步骤');
console.log('');

console.log('🌐 网络请求诊断：');
console.log('   1. 切换到Network标签');
console.log('   2. 点击Google登录按钮');
console.log('   3. 检查以下请求：');
console.log('      - GET /api/v1/auth/config (应返回200)');
console.log('      - POST /api/v1/auth/google (应返回200)');
console.log('   4. 如果请求失败，检查响应状态和错误信息');
console.log('');

console.log('📋 步骤 6: 具体错误情况');
console.log('');
console.log('🚨 如果看到以下错误：');
console.log('');
console.log('❌ "google is not defined"');
console.log('   解决: Google SDK未加载，检查网络连接或脚本引用');
console.log('');
console.log('❌ "Cannot read property \'accounts\' of undefined"');
console.log('   解决: Google API初始化过早，等待SDK完全加载');
console.log('');
console.log('❌ "Failed to fetch"');
console.log('   解决: 后端服务未启动或CORS配置问题');
console.log('');
console.log('❌ "401 Unauthorized" 或 "403 Forbidden"');
console.log('   解决: Google Client ID配置错误或域名不匹配');
console.log('');

console.log('📋 步骤 7: Google Cloud Console检查');
console.log('');
console.log('🔧 Google Cloud Console配置确认：');
console.log('   1. 访问 https://console.cloud.google.com/');
console.log('   2. 选择正确的项目');
console.log('   3. 进入 "API和服务" > "凭据"');
console.log('   4. 检查OAuth 2.0客户端ID配置：');
console.log('      - 授权的JavaScript来源: http://localhost:3379');
console.log('      - 类型: Web应用');
console.log('   5. 进入 "OAuth同意屏幕"');
console.log('   6. 确保应用状态为"已发布"或添加了测试用户');
console.log('');

console.log('📋 步骤 8: 测试流程');
console.log('');
console.log('🧪 完整测试步骤：');
console.log('   1. 启动服务器: npm run dev');
console.log('   2. 打开测试页面: http://localhost:3379/docs/google-auth-test.html');
console.log('   3. 观察页面是否显示 "✅ Google OAuth配置成功！"');
console.log('   4. 点击Google登录按钮');
console.log('   5. 选择Google账户并授权');
console.log('   6. 观察是否成功返回并显示用户信息');
console.log('');

console.log('💡 专业提示：');
console.log('   • 如果仍然卡住，尝试禁用浏览器广告拦截器');
console.log('   • 确保系统时间正确（影响Token验证）');
console.log('   • 检查防火墙是否阻止Google域名访问');
console.log('   • 尝试不同的浏览器进行对比测试');
console.log('');

console.log('📞 获取更多帮助：');
console.log('   📖 详细文档: docs/GOOGLE_OAUTH_CALLBACK_ISSUES.md');
console.log('   🚀 快速开始: docs/GOOGLE_OAUTH_QUICK_START.md');
console.log('   🔧 配置指南: docs/GOOGLE_AUTH_SETUP.md');
console.log('');

console.log('🎯 诊断完成！请按照上述步骤逐一排查。');
console.log('如果问题仍然存在，请检查浏览器控制台的具体错误信息。');
console.log(''); 